package com.cskaoyan.javase.oop2._1extends._10final._3variable._3static;

/**
 * final修饰静态成员变量,表示全局常量,是真正的一个常量,类全局唯一且取值不可变
 *      而且这个赋值必须在类加载中完成,不能依赖于创建对象赋值!
 * 语法:
 *  [访问权限修饰符] final static 数据类型 变量名;
 *  注:
 *      1.static final还是final static都可以,无所谓
 *      2.一般建议全局常量,采用字母全部大写,下划线分隔单词的命名方法.
 *
 * 回顾一下类加载时期,给静态成员变量赋值的方式:
 *      1.默认初始化
 *      2.静态代码块
 *      3.显式赋值
 * 显然默认初始化不能作为全局常量的取值,所以只能:
 *      1.静态代码块
 *      2.显式赋值
 * 二者选其一,必须选其一,只能选其一.
 * final修饰静态成员变量是一个全局常量，不会害怕外界访问和修改。所以在很多时候，它的访问权限修饰符都是public的。
 *
 * @since 11:12
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(Teacher.SALARY);
        // Teacher.SALARY = 10000;
    }
}

class Teacher {
    public static final double SALARY;

    static {
        SALARY = 20000;
    }
}
